package 创建者模式.singleton.破坏单例模式.解决破坏单例模式.序列化;

import java.io.*;

/**
 * @Description TODO
 * @Author shallow
 * @Date 2023/3/1 14:46
 */

public class Client {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        writeObject2File();
        readObject2File();
        readObject2File();
        //两次读出来的对象不是同一个对象，地址不同
        //原因:通过 IO 流的读取，进而将读取的内容转换为 Java 对象。在转换过程中会重新创建对象
        //解决，给单例对象添加readSolve方法
    }
    //从文件中读数据
    public static void readObject2File() throws IOException, ClassNotFoundException {
        //创建输入流对象
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\JavaProject\\design_parttern\\a.txt"));
        //调用readObject方法 读取对象
        Object o = ois.readObject();
        System.out.println("o = " + o);
        //释放资源
        ois.close();
    }
    //向文件中写数据（对象）
    public static void writeObject2File() throws IOException {
        //获取Singleton对象
        Singleton instance = Singleton.getInstance();
        //创建输出流对象
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\JavaProject\\design_parttern\\a.txt"));
        //写对象
        oos.writeObject(instance);
        //释放资源
        oos.close();
    }
}
